// Package models 定义数据模型结构体
package models

import (
	"time"
)

// TaskStatus 任务状态枚举类型
type TaskStatus int

// 任务状态常量定义
const (
	// StatusNew 新建状态
	StatusNew TaskStatus = iota
	// StatusInProgress 进行中状态
	StatusInProgress
	// StatusCompleted 已完成状态
	StatusCompleted
)

// Task 任务模型结构体
type Task struct {
	// ID 任务唯一标识符
	ID uint64 `json:"id" gorm:"primaryKey;autoIncrement"`
	// UserID 关联的用户ID
	UserID uint64 `json:"user_id" gorm:"index"`
	// GroupID 关联的任务分组ID
	GroupID uint64 `json:"group_id" gorm:"index"`
	// Title 任务标题
	Title string `json:"title"`
	// Description 任务描述
	Description string `json:"description"`
	// IsImportant 是否为重要任务
	IsImportant bool `json:"is_important"`
	// IsMyDay 是否为"我的一天"任务
	IsMyDay bool `json:"is_my_day"`
	// Status 任务状态
	Status TaskStatus `json:"status"`
	// CompletedAt 任务完成时间
	CompletedAt *time.Time `json:"completed_at"`
	// DueDate 任务截止日期
	DueDate *time.Time `json:"due_date"`
	// CreatedAt 创建时间
	CreatedAt time.Time `json:"created_at" gorm:"autoCreateTime"`
	// UpdatedAt 更新时间
	UpdatedAt time.Time `json:"updated_at" gorm:"autoUpdateTime"`
	// DeletedAt 软删除时间戳
	DeletedAt *time.Time `json:"-" gorm:"index"`
	// User 关联的用户对象
	User User `json:"-" gorm:"foreignKey:UserID"`
	// Group 关联的任务分组对象
	Group TaskGroup `json:"-" gorm:"foreignKey:GroupID"`
	// Logs 关联的任务日志列表
	Logs []TaskLog `json:"-"`
}

// TableName 指定Task模型对应的数据库表名
// 返回值: string - 表名
func (Task) TableName() string {
	return "tasks"
}
